home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <stdarg.h>
-
- static char tmp_str[256];
-
- error(char const *fmt, ...)
- {
- va_list ap;
- va_start(ap, fmt);
- (void)vkprintf(tmp_str, fmt, ap);
- cwrite(0, tmp_str, strlen(tmp_str));
- va_end(ap);
- }
-
- kprintf(char const *fmt, ...)
- {
- va_list ap;
- va_start(ap, fmt);
- (void)vkprintf(tmp_str, fmt, ap);
- cwrite(0, tmp_str, strlen(tmp_str));
- va_end(ap);
- }
-
- void fprintf_filtered(void *stream, const char *fmt, ...)
- {
- va_list ap;
- va_start(ap, fmt);
- (void)vkprintf(&tmp_str[strlen(tmp_str)], fmt, ap);
- va_end(ap);
- }
-
- void fputs_filtered(const char *str, void *stream)
- {
- strcat(tmp_str, str);
- }
-
- void printf_filtered(const char *fmt, ...)
- {
- va_list ap;
- va_start(ap, fmt);
- (void)vkprintf(&tmp_str[strlen(tmp_str)], fmt, ap);
- va_end(ap);
- }
-
- void print_address(long val, void *stream)
- {
- ksprintf(&tmp_str[strlen(tmp_str)], "%8.8X ", val);
- }
-
- long sprint_insn(long addr)
- {
- long off;
- print_address(addr, NULL);
- #ifdef KERNEL_DISSASM
- off = print_insn(addr, NULL);
- strcat(tmp_str,"\n");
- return off;
- #else
- strcat(tmp_str,"********\n");
- return 2;
- #endif
- }
-
- void insn_surround(long addr)
- {
- long off1,off2;
- int cnt = 2;
- do
- {
- cnt += 2;
- *tmp_str = 0;
- off1 = sprint_insn(addr-cnt);
- off2 = sprint_insn(addr-cnt+off1);
- }
- while ((cnt != off1+off2) && (cnt < 32));
- if (cnt >= 32) strcpy(tmp_str,"**********\n");
- off1 = sprint_insn(addr);
- sprint_insn(addr+off1);
- cwrite(0, tmp_str, strlen(tmp_str));
- }
-